package wwl.lsf;

import java.util.ArrayList;
import java.util.List;

/**
 * @Title
 * @Author wangwenliang
 * @Date 2021/7/20
 * @Description
 */
public class 子集 {
    static class Solution {
        List<Integer> t = new ArrayList<Integer>();
        List<List<Integer>> ans = new ArrayList<List<Integer>>();

        public List<List<Integer>> subsets(int[] nums) {
            int n = nums.length;
            for (int mask = 0; mask < (1 << n); ++mask) {
                t.clear();
                //
                for (int i = n - 1, j = 0; j < n; i--, j++) {
                    if ((mask & (1 << i)) != 0) {
                        t.add(nums[j]);
                    }
                }
                System.out.println(t);
                ans.add(new ArrayList<Integer>(t));
            }
            return ans;
        }

        public List<List<Integer>> ziji(int[] nums) {

            int length = nums.length;

            for (int outNum = 0; outNum < 1 << length; outNum++) {
                t.clear();
                for (int i = 0, j = length - 1; i < length; i++, j--) {
                    if ((outNum & (1 << j)) != 0) {
                        t.add(nums[i]);
                    }

                }
                System.out.println(t);
                ans.add(t);
            }
            return ans;
        }


    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] a = {1, 2, 3};
        solution.ziji(a);
    }

//    011
//    100 i=0
//
//            011
//            010 i=1
//
//            011
//            001 i=2

}
